package com.airlines.crewassignment.service.linkline;

import java.util.Date;
import java.util.List;

import com.airlines.crewassignment.domain.LinkLine;

/**
 * @author xxxx
 * @date 2018年3月26日 
 * @description 飞行员连线服务
 */
public interface LinkLineService {
	
	List<LinkLine> listLinkLineBase(String dutyCode,Date flightDate);
	
	/**
	 * 查询所有的连线，以及 构造初始化一个连线所有的需要的信息
	 * @param flightDate
	 * @param lastLinkLineInitFlag
	 * @return
	 */
	List<LinkLine> listLinkLineAllInfo(String dutyCode,Date flightDate,boolean lastLinkLineInitFlag);
	
	/**
	 * 初始化某一天的所有连线的任务环信息
	 * @param flightDate
	 */
//	List<LinkLine> initLinkLineLoopFact(Date flightDate);
	
	/**
	 * 上一个连线初始化（同一个任务环）
	 * @param thisLinkLine
	 * @param beforeFlightDate
	 * @return
	 */
	void initLastLinkLine(LinkLine thisLinkLine,Date beforeFlightDate);
	
	
//	void linkLineLoopFactInit(List<LinkLine> linkLineBaseList);
	
	void positionListInit(String dutyCode,List<LinkLine> linkLineBaseList);
	
	/**
	 * 连线主键初始化
	 * @param l
	 */
	String crewLinkLineKeyInit(LinkLine l);
	

	LinkLine getLinkLine(Date flightDate,int crewLinkLine,String dutyCode);

	void flightInfoSameTaskLoopList(String dutyCode,List<LinkLine> linkLineBaseList);

	void flightInfoListInit(String dutyCode,Date flightDate, List<LinkLine> linkLineList);
	
	/**
	 * 查询某个连线的执勤期，注意，该执勤期包含了同一天内同一个个任务环下的其他连线
	 * @param dutyCode
	 * @param flightDate
	 * @param crewLinkLineNo
	 * @return
	 */
	int getDutyDuration(String dutyCode,Date flightDate,int crewLinkLineNo);
}
